package com.zhuang.io.bio.two;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

public class ServerDemo {
	public static void main(String[] args) throws Exception {
		System.out.println("==服务器的启动==");
		// （1）注册端口
		@SuppressWarnings("resource")
		ServerSocket serverSocket = new ServerSocket(7777);
		while (true) {
			// （2）开始在这里暂停等待接收客户端的连接,得到一个端到端的Socket管道
			Socket socket = serverSocket.accept();
			new ServerReadThread(socket).start();
			System.out.println(socket.getRemoteSocketAddress() + "上线了！");
		}
	}
}

class ServerReadThread extends Thread {
	private Socket socket;

	public ServerReadThread(Socket socket) {
		this.socket = socket;
	}

	@Override
	public void run() {
		try {
			// （3）从Socket管道中得到一个字节输入流。
			InputStream is = socket.getInputStream();
			// （4）把字节输入流包装成自己需要的流进行数据的读取。
			BufferedReader br = new BufferedReader(new InputStreamReader(is));
			// （5）读取数据
			String line;
			while ((line = br.readLine()) != null) {
				System.out.println("服务端收到：" + socket.getRemoteSocketAddress() + ":" + line);
			}
		} catch (Exception e) {
			System.out.println(socket.getRemoteSocketAddress() + "下线了！");
		}
	}
}